Data networks are ubiquitous. They are utilized to transfer information from one location to the next and they do so through network protocols. One common protocol is the TCP/IP protocol, which adds headers and footers carrying transmission information to packets of “payload” data. When a packet is transmitted, it is saved for a period of time, in case the packet was not properly received and needs to be retransmitted. There may be a transmission queue, with the packets waiting for transmission, and a separate “after transmission” queue, holding already transmitted packets for possible retransmission. Depending on the latency in the current network, the after transmission queue can be quite large.
The TCP/IP and other protocols include a back channel through which retransmission requests and other information are sent. One common back channel transmission is an ACK (acknowledgement) packet which is a back channel packet indicating that a particular packet has been successfully received. When an ACK packet is received, the packet to which it refers is removed from the after transmission queue.
Some protocols use a NACK (Negative acknowledgment) packet, sent only when a packet is not properly received, rather than an ACK packet. This significantly reduces the number of back transmissions, since most packets are received and only a few are missed.
The ACK and NACK protocols provide reliability to the TCP/IP and other protocols. However, they add a significant amount of storage to the transmission units, especially since the transmission and after transmission queues are typically per flow (i.e. per source/destination pair).
Another protocol is an automatic repeat request (ARQ) where acknowledgements are sent but, if the transmitter does not receive an acknowledgement within a given time frame, the transmitter automatically retransmits the packet.